package com.bmob.lover.app.util

import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.bmob.lover.app.ext.assembly
import com.bmob.lover.app.ext.equal
import com.bmob.lover.data.constant.UrlConstant
import com.bmob.lover.data.model.bean.BmobList
import com.bmob.lover.data.model.bean.Update
import com.theone.mvvm.core.app.ext.msg
import com.theone.mvvm.core.app.util.BaseAppUpdateUtil
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
import rxhttp.wrapper.param.RxHttp
import rxhttp.wrapper.param.toFlowResponse

//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 * @author The one
 * @date 2021-05-08 15:24
 * @describe TODO
 * @email 625805189@qq.com
 * @remark
 */
class UpdateAppUtil(context:AppCompatActivity,showCheck:Boolean):BaseAppUpdateUtil<Update>(context,showCheck) {

    override fun requestServe() {
        context.lifecycleScope.launch {
            RxHttp.get(UrlConstant.APP_UPDATE)
                .add("where", assembly(equal("isDelete", false)))
                .add("order", "-versionCode")
                .add("limit", 1)
                .toFlowResponse<BmobList<Update>>()
                .catch {
                    onError(it.msg)
                }.collect {
                    it.results?.let {  results ->
                        if(results.isNotEmpty()){
                            results[0].onComplete()
                        }
                    }
                }
        }
    }

}